/**************************************************************************//**
 * @file     drv_gpio.h
 * @version  V1.00
 * $Revision: 1 $
 * $Date: 15/05/18 5:38p $
 * @brief    NUC970 GPIO driver header file
 *
 * @note
 * SPDX-License-Identifier: Apache-2.0
 * Copyright (C) 2015 Nuvoton Technology Corp. All rights reserved.
*****************************************************************************/

#ifndef __DRV_GPIO_H__
#define __DRV_GPIO_H__

#include <rtdef.h>

#ifdef __cplusplus
extern "C"
{
#endif

#define __NU_PORT(port)  GPIO##port##_BA

#define GET_PIN(PORTx, PIN) (rt_base_t)((16 * ( ((rt_base_t)__NU_PORT(PORTx) - (rt_base_t)GPIOA_BA) >> 6 )) + PIN)

#define NU_GET_PININDEX(port, bit)      ((port)<<4 + (bit))
#define NU_GET_BIT(index)               ((index) & 0x0000000F)
#define NU_GET_PORT(index)              (((index)>>4) & 0x0000000F)
#define NU_GET_BIT_MASK(bit)            (1 << (bit))
#define NU_GET_MFP(index)               (((index)>>3) & 0x0000000F)

int rt_hw_pin_init(void);
void nu_gpio_mode(rt_base_t pin, rt_base_t mode);
void nu_gpio_write(rt_base_t pin, rt_base_t value);
int nu_gpio_read(rt_base_t pin);

#ifdef __cplusplus
}
#endif

#endif // __DRV_GPIO_H__
